// app.js
const userManager = require('./utils/userManager.js');

App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 检查用户登录状态
    this.checkUserLoginStatus();

    // 初始化科目系统
    this.initializeSubjectSystem();

    // 启动token过期检测服务
    this.startTokenCheckService();

    // 微信登录（如果需要）
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        console.log('微信登录成功:', res);
      },
      fail: err => {
        console.error('微信登录失败:', err);
      }
    })
  },

  /**
   * 初始化科目系统
   */
  initializeSubjectSystem() {
    try {
      const { getSubjectList, initializeSubjectSystem } = require('./utils/subject.js');
      
      // 获取缓存的科目列表
      const cachedSubjects = getSubjectList();
      if (cachedSubjects && cachedSubjects.length > 0) {
        console.log('应用启动时初始化科目系统，使用缓存的科目列表');
        const currentSubject = initializeSubjectSystem(cachedSubjects);
        if (currentSubject) {
          this.globalData.selectedSubject = currentSubject;
          console.log('应用启动时设置默认科目:', currentSubject.name, 'ID:', currentSubject.id);
        }
      } else {
        console.log('应用启动时没有缓存的科目列表，等待首页加载');
      }
    } catch (error) {
      console.error('初始化科目系统失败:', error);
    }
  },

  /**
   * 检查用户登录状态
   */
  checkUserLoginStatus() {
    const currentUser = userManager.getCurrentUser();
    if (currentUser) {
      console.log('检测到用户已登录');
      this.globalData.userInfo = currentUser.userInfo;
      console.log('应用启动时获取到用户信息:', currentUser.userInfo);
    } else {
      console.log('用户未登录');
      this.globalData.userInfo = null;
    }
  },

  /**
   * 启动token过期检测服务
   */
  startTokenCheckService() {
    try {
      const { tokenService } = require('./utils/tokenService.js');
      if (tokenService) {
        // 保存到全局数据中，供其他页面使用
        this.globalData.tokenService = tokenService;
        
        // 如果用户已登录，启动token检测
        if (userManager.isLogin()) {
          console.log('用户已登录，启动token过期检测服务');
          tokenService.startTokenCheck();
        } else {
          console.log('用户未登录，不启动token过期检测服务');
        }
      }
    } catch (error) {
      console.error('启动token检测服务失败:', error);
    }
  },

  globalData: {
    userInfo: null,
    tokenService: null
  }
})
